package view;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.sql.Date;
import java.text.ParseException;
import java.text.SimpleDateFormat;

import java.util.HashSet;
import java.util.Iterator;
import java.util.Vector;

import javax.swing.ComboBoxModel;
import javax.swing.DefaultComboBoxModel;

import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JLabel;
import javax.swing.JTextField;

import javax.swing.WindowConstants;
import javax.swing.SwingUtilities;

import model.Servicio;

import controller.Sistema;


/**
* This code was edited or generated using CloudGarden's Jigloo
* SWT/Swing GUI Builder, which is free for non-commercial
* use. If Jigloo is being used commercially (ie, by a corporation,
* company or business for any purpose whatever) then you
* should purchase a license for each developer using Jigloo.
* Please visit www.cloudgarden.com for details.
* Use of Jigloo implies acceptance of these licensing terms.
* A COMMERCIAL LICENSE HAS NOT BEEN PURCHASED FOR
* THIS MACHINE, SO JIGLOO OR THIS CODE CANNOT BE USED
* LEGALLY FOR ANY CORPORATE OR COMMERCIAL PURPOSE.
*/
public class AltaPaquete extends javax.swing.JFrame {
	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;
	private AltaPaquete instancia;
	private JComboBox jComboBox1;
	private JLabel Servicio;
	private JButton Cancelar;
	private JButton Aceptar;
	private JTextField Vencimientotxt;
	private JLabel Vencimiento;
	private JTextField Descuentotxt;
	private JLabel Descuento;
	private JTextField Nombretxt;
	private JLabel Nombre;
	private Date dateVencimiento;
	private HashSet<Servicio>  servicios = new HashSet<Servicio>();
	/**
	* Auto-generated main method to display this JFrame
	*/
	public static void main(String[] args) {
		SwingUtilities.invokeLater(new Runnable() {
			public void run() {
				AltaPaquete inst = new AltaPaquete();
				inst.setLocationRelativeTo(null);
				inst.setVisible(true);
			}
		});
	}
	
	public AltaPaquete() {
		super();
		initGUI();
		instancia= this;
		this.setTitle("Alta Paquete");
		{
			Nombre = new JLabel();
			getContentPane().add(Nombre);
			Nombre.setText("Nombre");
			Nombre.setBounds(39, 71, 99, 16);
		}
		{
			Nombretxt = new JTextField();
			getContentPane().add(Nombretxt);
			Nombretxt.setBounds(167, 68, 156, 23);
		}
		{
			Descuento = new JLabel();
			getContentPane().add(Descuento);
			Descuento.setText("Descuento");
			Descuento.setBounds(39, 115, 99, 16);
		}
		{
			Descuentotxt = new JTextField();
			getContentPane().add(Descuentotxt);
			Descuentotxt.setBounds(167, 112, 156, 23);
		}
		{
			Vencimiento = new JLabel();
			getContentPane().add(Vencimiento);
			Vencimiento.setText("Vencimiento");
			Vencimiento.setBounds(39, 158, 110, 16);
		}
		{
			Vencimientotxt = new JTextField();
			getContentPane().add(Vencimientotxt);
			Vencimientotxt.setBounds(167, 155, 156, 23);
		}
		{
			Servicio = new JLabel();
			getContentPane().add(Servicio);
			Servicio.setText("Servicio");
			Servicio.setBounds(39, 31, 110, 16);
		}
		{
			Vector<String> nombres = new Vector<String>();
			servicios = Sistema.getInstance().getServicios();
			Iterator itr = (Iterator) servicios.iterator();
			while (itr.hasNext()) {
				Servicio servicio = (Servicio) itr.next();
				nombres.add(servicio.getNombre());
			}

			nombres.add("service 1");
			nombres.add("service 2");
			nombres.add("service 3");

			ComboBoxModel ServiciosCmboxModel = new DefaultComboBoxModel(
					nombres);
			jComboBox1 = new JComboBox();
			getContentPane().add(jComboBox1);
			jComboBox1.setModel(ServiciosCmboxModel);
			jComboBox1.setBounds(167, 28, 156, 23);
		}
		{
			Aceptar = new JButton();
			getContentPane().add(Aceptar);
			Aceptar.setText("Aceptar");
			Aceptar.setBounds(86, 208, 84, 24);
			Aceptar.addActionListener(new ActionListener() {
				public void actionPerformed(ActionEvent arg0) {
					float fCosto = 0;
					float fCantidad = 0;
					
					if (validateFieldEmpty()) {
						if (!valiateIsFloat(Descuentotxt.getText().trim())) {
							HelperTest.showMessage("Can't validate float");
						}
						else {
							Servicio servicio = (Servicio) jComboBox1.getSelectedItem();
							
							servicios.add(servicio);
							limpiarCampos();							
						}
					}
					
					try {
						dateVencimiento = (Date) new SimpleDateFormat("dd-MM-yyyy").parse(Vencimientotxt.getText());
						
					} catch (ParseException e1) {
						e1.printStackTrace();
					}
				
				Sistema.getInstance().altaPaquete(Nombretxt.getText(),Float.parseFloat(Descuentotxt.getText()), dateVencimiento, servicios);	
					
				}
			});
		}
		{
			Cancelar = new JButton();
			getContentPane().add(Cancelar);
			Cancelar.setText("Cancelar");
			Cancelar.setBounds(181, 208, 94, 24);
			Cancelar.addActionListener(new ActionListener() {
				@Override
				public void actionPerformed(ActionEvent e) {
					Menu app = new Menu();
					app.setLocationRelativeTo(null);
					app.setVisible(true);
					instancia.dispose();
					
				}
			});
		}

	}
	private boolean valiateIsFloat(String number) {
		if (number.length() > 0) {
			try {
				float f = Float.parseFloat(number);
				System.out.println("Metho validateIsFloat value: " + String.valueOf(f));
				return true;
			} catch (Exception e) {
				return false;
			}
		}
		return false;
	}
	
	private boolean validateFieldEmpty() {
		if (Descuentotxt != null && Descuentotxt.getText().trim().length() > 0 && Nombretxt != null && Nombretxt.getText().trim().length() > 0 && dateVencimiento != null ) {
			return true;
		}
		HelperTest.showMessage("Complete All Fields");
		return false;
		
	}
	private void initGUI() {
		try {
			setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
			getContentPane().setLayout(null);
			pack();
			setSize(400, 300);
		} catch (Exception e) {
		    //add your error handling code here
			e.printStackTrace();
		}
	}
	private void limpiarCampos() {
		Descuentotxt.setText(null);
		Nombretxt.setText(null);		
	}

}
